package Image;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;

/**
 * description:验证码
 * author:zcx
 * lenovo
 * 时间：2022.01.23.20.32
 */
public class Img6 {
    public static void main(String[] args) throws IOException {
                var len=4;
                var w=len*35-25;
                var h=45;
                var t=2;
                var r=new Random();
                var i=new BufferedImage(w,h,t);
                var g=i.createGraphics();
                //
                g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
                g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
                //g.setStroke(new BasicStroke(5));
                g.setColor(new Color(r.nextInt(200,256),r.nextInt(200,256),r.nextInt(200,256)));
                g.fillRect(0,0,w,h);
//设置字号
                int fontsize=30;
                //设置字体
                var font=new Font("宋体",Font.BOLD,fontsize);
                //font=font.deriveFont(fontsize);



               var fm=g.getFontMetrics(font);
              // var tw=fm.stringWidth(text);
                //设置验证码
                String letter="avcdefghijkmnopqrstuvwxyzABCDEFGHIJKMNOPQRSTUVWXYZ123456789";
                 StringBuilder sbu=new StringBuilder();



                int sp=10;
                for(int j=0;j<len;j++){
                 g.setColor(new Color(r.nextInt(200),r.nextInt(200),r.nextInt(200),255));
                // g.rotate(5);
                 var x=j*30+10;
                    var y=h/2+(fm.getAscent()-fm.getDescent())/2;
                    var pos=r.nextInt(letter.length());
                    var s= letter.substring(pos,pos+1);
//                    var fm=g.getFontMetrics(font);
//                    var tw=fm.stringWidth(s);
//                    x=r.nextInt(sp,w-tw-sp);
//                    y=r.nextInt(sp+fm.getAscent()-fm.getDescent(),h-sp-fm.getDescent());
                     sbu.append(s);
                      g.drawString(s,x,y);
                     }
                //干扰文字
        for (int j= 0; j< len*10; j++) {
            g.setColor(new Color(r.nextInt(180,256),r.nextInt(180,256),r.nextInt(180,256),r.nextInt(50,220)));
            var x=r.nextInt(w);
            var y=r.nextInt(h);
            var pos=r.nextInt(letter.length());
            var s= letter.substring(pos,pos+1);
            font=font.deriveFont((float) r.nextInt(12,32));
            g.setFont(font);
            g.drawString(s,x,y);

        }
                var cs=sbu.toString();
               System.out.println(cs);


                g.dispose();
                ImageIO.write(i,"png",new File("i4.png"));

    }
}
